package com.lwy.setter2;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.Collection;

/**
 * 填充器接口
 *
 * @author lwy
 */
public interface IStuffer<A extends Annotation> {

    /**
     * 初始化
     */
    default void initialize() {
    }

    /**
     * 填充
     *
     * @param annotation  字段上的注解
     * @param originField 源数据字段
     * @param origins     待填充的集合
     * @param <T>         待填充的集合的元素类型
     */
    default <T> void stuff(A annotation, Field originField, Collection<T> origins) throws Throwable {
    }

}
